"""
-*- coding:utf-8 -*-
__project__ = 'le-bo16'
__file_name__ = 'rickey'
__author__ = 'RickeyTing'
__time__ = '2020/10/27 19:36'
__product_name = PyCharm
# code is far away from bugs with the god animal protecting
    I love animals. They taste delicious.
              ┏┓      ┏┓
            ┏┛┻━━━┛┻┓
            ┃        ┃
            ┃  ┳┛  ┗┳  ┃
            ┃      ┻      ┃
            ┗━┓      ┏━┛
                ┃      ┗━━━┓
                ┃  神兽保佑    ┣┓
                ┃　永无BUG！   ┏┛
                ┗┓┓┏━┳┓┏┛
                  ┃┫┫  ┃┫┫
                  ┗┻┛  ┗┻┛
"""


#单例模式，，特征：一个类只有一个对象的模式，所有对象每次都赋值给一个对象，常用的场景是回收站和购物车等场景；
# 单例类、属性一样，类型也一样。使用单例可以有效的减少不必要的内存消耗

class Person(object):

    # def __new__(cls, *args, **kwargs):
    #     if not None:
    #         return object.__new__(cls)


# 26-28行代码等同于32-36行
    instance = None
    def __new__(cls, *args, **kwargs):
        if not cls.instance:
            cls.instance =object.__new__(cls)
        return cls.instance

    def __str__(self):
        return '姓名： %s, % self.name'



    def __init__(self):
        print('init')
        self.name = 'lele'


lele = Person()
print(lele)




try :                               #多个问题时，只会执行捕获第一个异常问题
    print(a)
    open('asdfe.ext')

except(FileNotFoundError,NameError) as name:    #把这个异常打印出来
    print('网路异常', name)


except (FileNotFoundError,NameError):
    print("网络异常，请稍后再试！！")

except Exception:
    print('流氓软件')

except:                    #第一个捕获异常，如果没有异常，就会执行捕获第二个异常
    print('你很棒！！！')


else:                       #正确就会执行else,错误就会跳到捕获异常
    print('else')


finally:
    print('very good!!!')




try:
    def my_func():
        print(q)

    my_func()  # 注意：调用时才能捕获异常。
except:
    pass

finally:
    print('未执行捕获异常')


# my_func()  #定义时，不调用就不能捕获。放在try 外面也能捕获异常




#抛出异常，，
class AgeError(Exception):
    def __init__(self, age):
        self.age = age

    def __str__(self):
        return '0-150age=%d' % self.age


class People(object):
    def __init__(self, age):
        if age > 0 and age < 150:
            self.age = age

        else:

            raise AgeError(age)

rechard = People(500)




